import axios from 'axios'
import { getToken } from '@/utils/auth'
import { Notification, MessageBox, Message } from 'element-ui'

// 创建axios实例
const service = axios.create({
    // axios中请求配置有baseURL选项，表示请求URL公共部分
    baseURL: process.env.VUE_APP_BASE_API,
    // 超时
    timeout: 10000
})
// request拦截器
service.interceptors.request.use(config => {
    // 是否需要设置 token
    const isToken = (config.headers || {}).isToken === false
    if (getToken() && !isToken) {
        config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
    }
    return config
}, error => {
    // console.log(error)
    Promise.reject(error)
})

service.interceptors.response.use(res => {
    if(res.status === 200) {
        if(res.config.responseType === 'blob' && res.data.size > 0) {
            //文件名 文件保存对话框中的默认显示
            let fileName = res.config.params.fileName;
            let data = res.data;
            if(!data){
                return
            }
            //构造a标签 通过a标签来下载
            let url = window.URL.createObjectURL(new Blob([data]))
            let a = document.createElement('a')
            a.style.display = 'none'
            a.href = url
            //此处的download是a标签的内容，固定写法，不是后台api接口
            a.setAttribute('download',fileName)
            document.body.appendChild(a)
            //点击下载
            a.click()
            // 下载完成移除元素
            document.body.removeChild(a);
            // 释放掉blob对象
            window.URL.revokeObjectURL(url);
        } else {
            Message({
                message: '文件不存在',
                type: 'error'
            })
        }

    } else {
        Message({
            message: '文件下载失败',
            type: 'error'
        })
    }





})

export default service
